package com.wn.controller;

import com.netflix.hystrix.contrib.javanica.annotation.DefaultProperties;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import com.wn.feign.MemberFeignClient;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author yellow Docter
 * @date 2022 -10-26
 * @desc  测试hystrix 进行服务降级 (业务代码和 服务降级的代码进行了耦合 )
 *   服务降级
 *   1、出现了异常或者调用超时 会调用提前准备好的方法的预定值
 *
 *   如何配置：
 *   1、添加注解
 *     @DefaultProperties(defaultFallback = "errorFallback") // 指定降级方法
 *   2、 @HystrixCommand		   // 熔断降级注解
 *   3、自己实现降级方法
 *
 */
//@RestController
//@RequestMapping("feign")
//@Slf4j
//@DefaultProperties(defaultFallback = "errorFallback") // 指定降级方法
public class Feign02Controller {

//    @Autowired
//    private MemberFeignClient memberFeignClient;
//
//    @GetMapping("member/{mid}")
//    @HystrixCommand       //指定服务降级的方法
//    public String findOne(@PathVariable("mid")String mid){
//        // feign 的远程调用
//        String one = memberFeignClient.findOne(mid);
//        return one;
//    }
//
//    @GetMapping("member")
//    public String findTimeOut(){
//        String timeOut = memberFeignClient.findTimeOut();
//        return timeOut;
//    }
//
//    // 降级方法，返回string
//    public String errorFallback(){
//        return "默认降级方法";
//    }
}
